//
//  HMTabBar.m
//  miaopai
//
//  Created by 121 on 17/2/28.
//  Copyright © 2017年 121. All rights reserved.
//

#import "HMTabBar.h"
#import "UIView+HMExtension.h"

#define kSpace 10

@interface HMTabBar ()
/** plus按钮 */
@property (nonatomic, weak) UIButton *addBtn;
@end

@implementation HMTabBar

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        UIButton *button = [[UIButton alloc] init];
        [button setImage:[UIImage imageNamed:@"addIcon"] forState:UIControlStateNormal];
        [button setImage:[UIImage imageNamed:@"addIcon"] forState:UIControlStateHighlighted];
        [self addSubview:button];
        self.addBtn = button;
        
    }
    return self;
}


- (void)layoutSubviews {
    [super layoutSubviews];
//    //系统自带的点击按钮类型是UITabBarButton,可以通过查看的调试器就可以看到的
    
    self.addBtn.centerX = self.centerX;
    self.addBtn.centerY = self.height * 0.5 - 2*kSpace;
    
    
    
    
   CGSize size = CGSizeMake(self.addBtn.currentImage.size.width, self.addBtn.currentImage.size.height);
    self.addBtn.size = size;
    
   // NSLog(@"%@",NSStringFromCGSize(size));
    
    CGFloat buttonWith = self.width / 5;

    Class barButtonClass = NSClassFromString(@"UITabBarButton");
    
    int barButtonIndex = 0;
    for (UIView *barButton  in self.subviews) {
        if ([barButton isKindOfClass:barButtonClass]) {
            barButton.x = barButtonIndex * buttonWith;
            barButtonIndex++;
            if (barButtonIndex == 2) { //多加一次
               barButtonIndex++;
            }
            
        }
    }
    
    
    //在addBtn下面添加字体
    UILabel *findLabel = [[UILabel alloc] init];
    findLabel.text = @"发现";
    findLabel.textColor = [UIColor redColor];
    findLabel.font = [UIFont systemFontOfSize:11];
    [findLabel sizeToFit];
    [self addSubview:findLabel];
    
    findLabel.centerX = self.addBtn.centerX;
    findLabel.centerY = CGRectGetMaxY(self.addBtn.frame) + kSpace ;
    [self addSubview:findLabel];
    
    [self bringSubviewToFront:self.addBtn];
    //给addButton添加点击事件
    [self.addBtn addTarget:self action:@selector(clickAddBtnEvent:) forControlEvents:UIControlEventTouchUpInside];
}


- (void)clickAddBtnEvent :(UIButton *)button {
    if ([self.delegate respondsToSelector:@selector(clickAddTabBarEvent:)]) {
        [self.tabBarDelegate clickAddTabBarEvent:self];
    }
}




//重写hitTest方法，去监听发布按钮的点击，目的是为了让凸出的部分点击也有反应
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    //这一个判断是关键，不判断的话push到其他页面，点击发布按钮的位置也是会有反应的，这样就不好了
    //self.isHidden == NO 说明当前页面是有tabbar的，那么肯定是在导航控制器的根控制器页面
    //在导航控制器根控制器页面，那么我们就需要判断手指点击的位置是否在发布按钮身上
    //是的话让发布按钮自己处理点击事件，不是的话让系统去处理点击事件就可以了
    if (self.isHidden == NO) {
        
        //将当前tabbar的触摸点转换坐标系，转换到发布按钮的身上，生成一个新的点
        CGPoint newP = [self convertPoint:point toView:self.addBtn];
        
        //判断如果这个新的点是在发布按钮身上，那么处理点击事件最合适的view就是发布按钮
        if ( [self.addBtn pointInside:newP withEvent:event]) {
            return self.addBtn;
        }else{//如果点不在发布按钮身上，直接让系统处理就可以了
            return [super hitTest:point withEvent:event];
        }
    }
    else {//tabbar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
        return [super hitTest:point withEvent:event];
    }
    
    
    
}


@end
